package me.send.business.service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import me.send.business.base.ErrorEntity;
import me.send.business.base.SendVariable;
import me.send.business.service.mapper.ConfigurationMapper;
import me.send.business.service.mapper.MessageMapper;
import me.send.business.service.mapper.PhonenumberMapper;
import me.send.business.service.pojo.Configuration;
import me.send.business.service.pojo.Message;
import me.send.framework.util.HelperUtil;

import org.springframework.beans.factory.annotation.Autowired;

public class BaseService {

	@Autowired
	private PhonenumberMapper phonenumberMapper;

	@Autowired
	private ConfigurationMapper configurationMapper;
	
	@Autowired
	protected MessageMapper messageMapper;

	protected Map<String, Object> configuration;
	
	// 使用构造器加载所有的配置项目 2015年6月2日17:49:45
	
	
	protected void initialization(){
		if (configuration == null) {
			// 如果还没有加载过 那么首先实例化一下 2015年6月2日17:53:31
			configuration = new HashMap<String, Object>();
			// 加载所有的配置的项目 到map下面
			List<Configuration> list_all = configurationMapper.list_all();
			// 便利下面所有的选项 2015年6月2日17:55:15
			for (Configuration con : list_all) {
				configuration.put(con.getConfigkey(), con.getConfigvalue());
			}
		}
	}


	/**
	 * 查看这个tasken是否在数据库存在 在每个调用api的方法 都需要使用 2015年5月26日17:52:31 传过来的key
	 * 是base64加密后的 *
	 */
	protected boolean isDevicenumber(String devicenumber) {
		// 判断这个devicenumber是否存在
		if (devicenumber != null && !"".equals(devicenumber)) {
			if (phonenumberMapper.count_devicenumber(devicenumber) > 0) {
				return true;
			} else {
				return false;
			}
		}
		return false;
	}

	/** 成功 1000 * */
	protected static final String SUCCESS_1000 = "1000";
	/** 系统错误 1001* */
	protected static final String ERROR_1001 = "1001";
	/** 缺少key值 1002 * */
	protected static final String ERROR_1002 = "1002";
	/** 对象已经存在 1003 * */
	protected static final String ERROR_1003 = "1003";
	/** 验证码失效 1004 * */
	protected static final String ERROR_1004 = "1004";
	/** 验证码错误 1005 * */
	protected static final String ERROR_1005 = "1005";
	/** 缺少对象 1006 * */
	protected static final String ERROR_1006 = "1006";

	/** 密码错误 1007 * */
	protected static final String ERROR_1007 = "1007";
	/** 该手机已注册 * */
	protected static final String ERROR_1008 = "1008";

	// 所有的错误码都显示在这个方法上面 2015年6月1日15:08:42

	/**
	 * 成功 1000
	 */
	public ErrorEntity error_1000() {
		return this.getErrorEntity(SUCCESS_1000);
	}

	/**
	 * 系统错误 1001
	 * 
	 * @return
	 */
	public ErrorEntity error_1001() {
		return this.getErrorEntity(ERROR_1001);
	}

	/**
	 * 缺少key值 1002
	 * 
	 * @return
	 */
	protected ErrorEntity error_1002() {
		return this.getErrorEntity(ERROR_1002);
	}

	/**
	 * 对象已经存在 1003
	 * 
	 * @return
	 */
	protected ErrorEntity error_1003() {
		return this.getErrorEntity(ERROR_1003);
	}

	/**
	 * 验证码失效 1004
	 * 
	 * @return
	 */
	protected ErrorEntity error_1004() {
		return this.getErrorEntity(ERROR_1004);
	}

	/**
	 * 验证码错误 1005
	 * 
	 * @return
	 */
	protected ErrorEntity error_1005() {
		return this.getErrorEntity(ERROR_1005);
	}

	/**
	 * 缺少对象 1006
	 * 
	 * @return
	 */
	protected ErrorEntity error_1006() {
		return this.getErrorEntity(ERROR_1006);
	}

	/**
	 * 密码错误 1007
	 */
	protected ErrorEntity error_1007() {
		return this.getErrorEntity(ERROR_1007);
	}

	/**
	 * 返回验证码
	 */
	protected ErrorEntity getErrorEntity(String value) {
		return SendVariable.errorEntityMap.get(value);
	}

	/**
	 * 获取 定义到 哪一个 配置 对象 单个 2015年6月3日09:19:13
	 */
	protected Object getConfigurationValue(String key) {
		initialization();
		// 根据key获取到value的值 通过配置表 2015年6月3日09:20:19
		return configuration.get(key);
	}
	
	protected int saveMessage(Message message) {
		message.setCreatetime(HelperUtil.getCurrentDate());
		message.setUpdatetime(HelperUtil.getCurrentDate());
		return messageMapper.addMessage(message);
	}

}
